home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CMDENABL.PAK / CMDENAB1.CPP next >
C/C++ Source or Header  |  1997-05-06  |  4KB  |  193 lines

  1. // ---------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (C) 1994, 1995 by Borland International, All Rights Reserved
  4. //
  5. //  Command-enabling sample application
  6. //  First version implements four file commands, along with two commands to
  7. //  toggle flags and one command to show current state of flags.
  8. //  Performs no command enabling.
  9. //----------------------------------------------------------------------------
  10. #include <owl/pch.h>
  11. #include <owl/applicat.h>
  12. #include <owl/framewin.h>
  13. #include "cmdenabl.h"
  14.  
  15. //
  16. // class TCmdEnableApp
  17. // ~~~~~ ~~~~~~~~~~~~~
  18. // Application object initializes TApplication, overrides InitMainWindow.
  19. //
  20. class TCmdEnableApp : public TApplication {
  21.   public:
  22.     TCmdEnableApp() : TApplication() {}
  23.  
  24.   protected:
  25.     void InitMainWindow();
  26. };
  27.  
  28. //
  29. // class TCmdEnableWindow
  30. // ~~~~~ ~~~~~~~~~~~~~~~~
  31. // Window object initializes TWindow, adds four event handlers, adds
  32. // response table for four events.
  33. //
  34. class TCmdEnableWindow : public TWindow {
  35.   public:
  36.     TCmdEnableWindow(TWindow* parent = 0);
  37.  
  38.   protected:
  39.     // Event handlers
  40.     //
  41.     void CmFileNew();
  42.     void CmFileOpen();
  43.     void CmFileSave();
  44.     void CmFileSaveAs();
  45.     void CmToggleDirty();
  46.     void CmToggleNew();
  47.     void CmShowState();
  48.  
  49.     bool IsDirty;
  50.     bool IsNewFile;
  51.  
  52.   DECLARE_RESPONSE_TABLE(TCmdEnableWindow);
  53. };
  54.  
  55.  
  56. //
  57. //
  58. //
  59. DEFINE_RESPONSE_TABLE1(TCmdEnableWindow, TWindow)
  60.   EV_COMMAND(CM_FILENEW, CmFileNew),
  61.   EV_COMMAND(CM_FILEOPEN, CmFileOpen),
  62.   EV_COMMAND(CM_FILESAVE, CmFileSave),
  63.   EV_COMMAND(CM_FILESAVEAS, CmFileSaveAs),
  64.   EV_COMMAND(CM_TOGGLEDIRTY, CmToggleDirty),
  65.   EV_COMMAND(CM_TOGGLENEW, CmToggleNew),
  66.   EV_COMMAND(CM_SHOWSTATE, CmShowState),
  67. END_RESPONSE_TABLE;
  68.  
  69.  
  70. //
  71. // TCmdEnableApp::InitMainWindow
  72. //
  73. void
  74. TCmdEnableApp::InitMainWindow()
  75. {
  76.   // Construct the frame window
  77.   //
  78.   TFrameWindow* frame = new TFrameWindow(0, "Command-enabling sample application",
  79.     new TCmdEnableWindow, true);
  80.  
  81.   // Set the main window and its menu
  82.   //
  83.   SetMainWindow(frame);
  84.   GetMainWindow()->AssignMenu(MN_COMMANDS);
  85. }
  86.  
  87.  
  88. //
  89. //
  90. //
  91. TCmdEnableWindow::TCmdEnableWindow(TWindow* parent)
  92. :
  93.   TWindow(parent),
  94.   IsNewFile(true),
  95.   IsDirty(false)
  96. {
  97. }
  98.  
  99.  
  100. //
  101. //
  102. //
  103. void
  104. TCmdEnableWindow::CmFileNew()
  105. {
  106.   IsDirty   = false;
  107.   IsNewFile = true;
  108.   MessageBox("Opened a new file.\nIsDirty=false\nIsNewFile=true",
  109.     "File action taken");
  110. }
  111.  
  112.  
  113. //
  114. //
  115. //
  116. void
  117. TCmdEnableWindow::CmFileOpen()
  118. {
  119.   IsDirty   = false;
  120.   IsNewFile = false;
  121.   MessageBox("Opened an existing file.\nIsDirty=false\nIsNewFile=false",
  122.     "File action taken");
  123. }
  124.  
  125.  
  126. //
  127. //
  128. //
  129. void
  130. TCmdEnableWindow::CmFileSave()
  131. {
  132.   IsDirty   = false;
  133.   IsNewFile = false;
  134.   MessageBox("Saved an existing file.\nIsDirty=false\nIsNewFile=false",
  135.     "File action taken");
  136. }
  137.  
  138.  
  139. //
  140. //
  141. //
  142. void
  143. TCmdEnableWindow::CmFileSaveAs()
  144. {
  145.   IsDirty   = false;
  146.   IsNewFile = false;
  147.   MessageBox("Saved a file under a new name.\nIsDirty=false\nIsNewFile=false",
  148.     "File action taken");
  149. }
  150.  
  151.  
  152. //
  153. //
  154. //
  155. void
  156. TCmdEnableWindow::CmToggleDirty()
  157. {
  158.   IsDirty = !IsDirty;
  159. }
  160.  
  161.  
  162. //
  163. //
  164. //
  165. void
  166. TCmdEnableWindow::CmToggleNew()
  167. {
  168.   IsNewFile = !IsNewFile;
  169. }
  170.  
  171.  
  172. //
  173. //
  174. //
  175. void
  176. TCmdEnableWindow::CmShowState()
  177. {
  178.   string str(IsDirty ? "IsDirty = true\n" : "IsDirty = false\n");
  179.   str += (IsNewFile ? "IsNewFile = true" : "IsNewFile = false");
  180.   MessageBox(str.c_str(), "Current state");
  181. }
  182.  
  183.  
  184. //
  185. // Put the OwlMain here just to get it out of the way
  186. //
  187. int
  188. OwlMain(int /*argc*/, char* /*argv*/ [])
  189. {
  190.   return TCmdEnableApp().Run();
  191. }
  192.  
  193.